import IPython.display as ipd
import librosa
import librosa.display
import matplotlib.pyplot as plt
filename = 'mixkit-island-beat-250.mp3'
island_beat = ipd.Audio(filename)
island_beat
plt.figure(figsize=(15,4))
data,sample_rate1 = librosa.load(filename, sr=22050, mono=True, offset=0.0, duration=64, res_type='kaiser_best')
sample_rate1
librosa.display.waveplot(data,sr=sample_rate1, max_points=50000.0, x_axis='time', offset=0.0, max_sr=1000)
import numpy as np
D = librosa.stft(data)
S_db = librosa.amplitude_to_db(np.abs(D), ref=np.max)
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
img = librosa.display.specshow(S_db,
y_axis='log', x_axis='time', ax=ax)
times = librosa.frames_to_time(np.arange(S_db.shape[1]))
bass_signal = S_db[0:10, :]
bass_amplitude = bass_signal.sum(axis=0)
from plotly import graph_objects as go
island_beat
fig = go.Figure()
fig.add_trace(
go.Scattergl(
#x=np.arange(bass_amplitude.shape[0]) * (101 / bass_amplitude.shape[0]) , y=bass_amplitude
x=times , y=bass_amplitude
)
)
new_time_unit = times * 30
import pandas as pd
df = pd.DataFrame(
{
'time_unit': new_time_unit,
'db_sum': bass_amplitude
}
)
df.loc[:, 'time_unit_int'] = df.time_unit.astype(int)
db_df = df.groupby('time_unit_int').db_sum.mean().to_frame()
db_df.to_csv('music_db.csv', index=False)
db_df.shape